//package com.zmn.plat.dubbo.interfaces.channel;
//
//import java.util.List;
//
//import javax.validation.Valid;
//import javax.validation.constraints.NotEmpty;
//import javax.validation.constraints.NotNull;
//import javax.validation.constraints.Positive;
//import javax.validation.constraints.Size;
//
//import com.zmn.common.dto.AreaDTO;
//import com.zmn.common.dto.KvDTO;
//import com.zmn.common.dto.VtDTO;
//import com.zmn.common.dto2.ResponseDTO;
//import com.zmn.plat.common.dto.KVDTO;
//import com.zmn.plat.common.dto.category.CategoryDRO;
//import com.zmn.plat.common.dto.category.CategoryInfoDRO;
//import com.zmn.plat.common.dto.category.CategoryUnionInfoDRO;
//import com.zmn.plat.common.dto.channel.category.ChannelCategorySimpleSpellDIO;
//import com.zmn.plat.common.dto.channel.category.ChannelCategorySimpleSpellDRO;
//import com.zmn.plat.common.dto.servcategory.ServCategoryDRO;
//import com.zmn.plat.dubbo.utils.DubboConsts;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//
///**
// * 渠道服务分类远程接口
// *
// * @author xiangjunming
// * @since 2019 /09/25 11:46:33
// */
//@Api(value = "渠道服务分类服务", tags = {"渠道服务分类"})
//public interface ChannelCategoryListRemoteService {
//
//    /**
//     * 描述: 根据渠道id获取开通的服务分类、一级产品分类、产品（前台、树型结构）
//     *
//     * @param channelId 渠道id
//     * @return com.zmn.common.dto.KvDTO<id, 名称, children>
//     * @author guoqiao
//     * @since 2021/5/28 9:33
//     */
//    @ApiOperation(value = "根据渠道id获取开通的服务分类、一级产品分类、产品（前台、树型结构）", response = ResponseDTO.class)
//    ResponseDTO<List<KVDTO>> listCategoryTreeByChannelId(@NotNull(message = "channelId不能为空") @ApiParam(value = "渠道id", required = true) Integer channelId);
//
//    /**
//     * 根据渠道ID查询服务分类
//     *
//     * @param channelId the channel id
//     * @param showType  产品分类 1后台 2前台
//     * @return key =分类ID, value=分类名称
//     */
//    @ApiOperation(value = "根据渠道ID查询服务分类", response = ResponseDTO.class, tags = {"服务分类", "渠道ID"})
//    ResponseDTO<List<ServCategoryDRO>> listServCategoryByChannelId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType);
//
//    /**
//     * 根据渠道ID和服务分类ID查询一级产品分类
//     *
//     * @param channelId   the channel id
//     * @param showType    产品分类 1后台 2前台
//     * @param servCategId the serv categ id
//     * @return key =分类ID, value=分类名称
//     */
//    @ApiOperation(value = "根据渠道ID和服务分类ID查询一级产品分类", response = ResponseDTO.class, tags = {"服务分类", "渠道ID"})
//    ResponseDTO<List<CategoryDRO>> listCategoryOneByChannelIdAndServCategId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType,
//            @NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") @ApiParam(value = "服务分类id", required = true) Integer servCategId);
//
//    /**
//     * 根据渠道ID和产品一级分类ID查询二级产品分类
//     *
//     * @param channelId  the channel id
//     * @param showType   产品分类 1后台 2前台
//     * @param categOneId the categ one id
//     * @return key =分类ID, value=分类名称
//     * @see “没有实际意义，分类查询最好都要服务分类，如果需要查询一级分类下面开通的二级分类，直接查询分类表就好”
//     */
//    @Deprecated
//    @ApiOperation(value = "根据渠道ID和产品一级分类ID查询二级产品分类", response = ResponseDTO.class, tags = {"服务分类", "渠道ID"})
//    ResponseDTO<List<CategoryInfoDRO>> listCategoryByChannelIdAndCategOneId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType,
//            @NotNull(message = "categOneId不能为空") @Positive(message = "categOneId必须为大于0的正整数") @ApiParam(value = "产品一级分类id", required = true) Integer categOneId);
//
//    /**
//     * 根据渠道ID和服务分类ID查询二级产品分类
//     *
//     * @param channelId   the channel id
//     * @param showType    产品分类 1后台 2前台
//     * @param servCategId the serv categ id
//     * @return key =分类ID, value=分类名称
//     */
//    @ApiOperation(value = "根据渠道ID和服务分类ID查询二级产品分类", response = ResponseDTO.class, tags = {"服务分类", "渠道ID"})
//    ResponseDTO<List<CategoryInfoDRO>> listCategoryByChannelIdAndServCategId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType,
//            @NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") @ApiParam(value = "服务分类id", required = true) Integer servCategId);
//
//    /**
//     * 根据渠道id，服务分类id，一级分类id，二级分类id集合，查询已经开通的二级分类id
//     *
//     * @param channelId   渠道id
//     * @param servCategId 服务分类id
//     * @param categIds    二级分类id集合
//     * @return
//     */
//    @ApiOperation(value = "根据渠道id，服务分类id，一级分类id，二级分类id集合，查询已经开通的二级分类id", response = ResponseDTO.class, tags = {"服务分类", "渠道ID"})
//    ResponseDTO<List<Integer>> listCategIdByChannelIdAndServCategIdAndCategIds(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") @ApiParam(value = "服务分类id", required = true) Integer servCategId,
//            @NotEmpty(message = "categIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @Size(min = 1, max = DubboConsts.MAX_PARAM_LENGTH,
//                    message = "categIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @ApiParam(value = "二级分类id集合", required = true) List<Integer> categIds);
//
//    /**
//     * 根据渠道ID和服务分类ID查询一级产品分类、二级产品分类
//     *
//     * @param channelId   the channel id
//     * @param showType    产品分类 1后台 2前台
//     * @param servCategId the serv categ id
//     * @return key =分类ID, value=分类名称
//     */
//    @ApiOperation(value = "根据渠道ID和服务分类ID查询一级产品分类、二级产品分类", response = ResponseDTO.class, tags = {"服务分类", "渠道ID"})
//    ResponseDTO<List<CategoryInfoDRO>> listAllCategoryByChannelIdAndServCategId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType,
//            @NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") @ApiParam(value = "服务分类id", required = true) Integer servCategId);
//
//    /**
//     * 根据渠道ID查询前台一级产品分类、二级产品分类
//     *
//     * @param channelId the channel id
//     * @return key =分类ID, value=分类名称
//     */
//    @ApiOperation(value = "根据渠道ID查询前台一级产品分类、二级产品分类", response = ResponseDTO.class, tags = {"渠道ID"})
//    ResponseDTO<List<CategoryInfoDRO>>
//    listShowCategByChannelId(@NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId);
//
//    /**
//     * 查询全部等级分类[服务分类->产品一级分类->产品二级分类]
//     *
//     * @param channelId the channel id
//     * @param showType  产品分类 1后台 2前台
//     * @return key =分类ID, value=分类名称, children=下级分类
//     */
//    @ApiOperation(value = "查询全部等级分类[服务分类->产品一级分类->产品二级分类]", response = ResponseDTO.class, tags = {"渠道ID"})
//    ResponseDTO<List<KvDTO<Integer, String>>> listAllLevelCategoryByChannelId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType);
//
//    /**
//     * 通过渠道ID,城市ID获取服务区域下已开通的服务分类列表
//     *
//     * @param channelId the channel id
//     * @param showType  产品分类 1后台 2前台
//     * @param cityId    城市id
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID,城市ID获取服务区域下已开通的服务分类列表", response = ResponseDTO.class, tags = {"渠道ID", "城市id"})
//    ResponseDTO<List<ServCategoryDRO>> listServCategoryByChannelIdAndCityId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType,
//            @NotNull(message = "cityId不能为空") @Positive(message = "cityId必须为大于0的正整数") @ApiParam(value = "城市id", required = true) Integer cityId);
//
//    /**
//     * 通过渠道ID,城市ID,分类简称，获取服务区域下已开通的分类列表（不区分分类类型，有可能是服务分类或者产品分类）
//     *
//     * @param channelCategorySimpleSpellDIO 入参
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID,城市ID,分类简称，获取服务区域下已开通的分类列表", response = ResponseDTO.class, tags = {"渠道ID", "城市id", "分类简称"})
//    ResponseDTO<List<ChannelCategorySimpleSpellDRO>> listCategoryByChannelIdAndCityIdAndSimpleSpell(@NotNull(message = "参数不能为空") @Valid ChannelCategorySimpleSpellDIO channelCategorySimpleSpellDIO);
//
//    /**
//     * 通过渠道ID,城市ID,服务分类ID获取服务区域下已开通的二级分类列表
//     *
//     * @param channelId   the channel id
//     * @param showType    产品分类 1后台 2前台
//     * @param cityId      the city id
//     * @param servCategId the serv categ id
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID,城市ID,服务分类ID获取服务区域下已开通的二级分类列表", response = ResponseDTO.class, tags = {"渠道ID", "城市id"})
//    ResponseDTO<List<CategoryInfoDRO>> listCategoryByChannelIdAndCityIdAndServCategId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType,
//            @NotNull(message = "cityId不能为空") @Positive(message = "cityId必须为大于0的正整数") @ApiParam(value = "城市id", required = true) Integer cityId,
//            @NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") @ApiParam(value = "服务分类id", required = true) Integer servCategId);
//
//    /**
//     * 通过渠道ID,城市ID,服务分类ID获取服务区域下已开通的二级分类列表
//     *
//     * @param channelId    the channel id
//     * @param showType     产品分类 1后台 2前台
//     * @param cityId       the city id
//     * @param servCategIds the serv categ id
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID,城市ID,服务分类ID获取服务区域下已开通的二级分类列表", response = ResponseDTO.class, tags = {"渠道ID", "城市id"})
//    ResponseDTO<List<CategoryInfoDRO>> listCategoryByChannelIdAndCityIdAndServCategIds(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType,
//            @NotNull(message = "cityId不能为空") @Positive(message = "cityId必须为大于0的正整数") @ApiParam(value = "城市id", required = true) Integer cityId,
//            @NotEmpty(message = "servCategIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @Size(min = 1, max = DubboConsts.MAX_PARAM_LENGTH,
//                    message = "servCategIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @ApiParam(value = "服务分类ID集合", required = true) List<Integer> servCategIds);
//
//
//    /**
//     * 通过渠道ID,城市ID,服务分类ID列表获取服务区域下已开通的前台品类列表
//     *
//     * @param channelId    the channel id
//     * @param cityId       the city id
//     * @param servCategIds the serv categ id
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID,城市ID,服务分类ID列表获取服务区域下已开通的前台品类列表", response = ResponseDTO.class, tags = {"渠道ID", "城市id"})
//    ResponseDTO<List<CategoryUnionInfoDRO>> listUnionCategoryByChannelIdAndCityIdAndServCategIds(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "cityId不能为空") @Positive(message = "cityId必须为大于0的正整数") @ApiParam(value = "城市id", required = true) Integer cityId,
//            @NotEmpty(message = "servCategIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @Size(min = 1, max = DubboConsts.MAX_PARAM_LENGTH,
//                    message = "servCategIds参数不能为空且个数不能超过" + DubboConsts.MAX_PARAM_LENGTH) @ApiParam(value = "服务分类ID集合", required = true) List<Integer> servCategIds);
//
//    /**
//     * 判断渠道城市是否开通二级产品分类
//     *
//     * @param channelId   the channel id
//     * @param showType    产品分类 1后台 2前台
//     * @param cityId      the city id
//     * @param servCategId the serv categ id
//     * @return
//     */
//    @ApiOperation(value = "判断渠道城市是否开通二级产品分类", response = ResponseDTO.class, tags = {"渠道ID", "城市id"})
//    ResponseDTO<Boolean> isOpenCategory(@NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//                                        @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType,
//                                        @NotNull(message = "cityId不能为空") @Positive(message = "cityId必须为大于0的正整数") @ApiParam(value = "城市id", required = true) Integer cityId,
//                                        @NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") @ApiParam(value = "服务分类id", required = true) Integer servCategId,
//                                        @NotNull(message = "categTwoId不能为空") @Positive(message = "categTwoId必须为大于0的正整数") @ApiParam(value = "二级产品分类id", required = true) Integer categTwoId);
//
//    /**
//     * 通过渠道ID获取服务区域下开通的城市
//     *
//     * @param channelId 渠道ID
//     * @param showType  产品分类 1后台 2前台
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID获取服务区域下开通的城市", response = ResponseDTO.class, tags = {"渠道ID"})
//    ResponseDTO<List<AreaDTO>> listAreaByChannelId(@NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//                                                   @ApiParam(value = "产品类型", required = false) Integer showType);
//
//    /**
//     * 通过渠道ID,服务分类ID获取服务区域下开通的城市
//     *
//     * @param channelId   渠道ID
//     * @param showType    产品分类 1后台 2前台
//     * @param servCategId 服务分类ID
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID,服务分类ID获取服务区域下开通的城市", response = ResponseDTO.class, tags = {"渠道ID", "服务分类"})
//    ResponseDTO<List<AreaDTO>> listAreaByChannelIdAndServCategId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "showType不能为空") @Positive(message = "showType必须为大于0的正整数") @ApiParam(value = "产品类型", required = true) Integer showType,
//            @NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") @ApiParam(value = "服务分类id", required = true) Integer servCategId);
//
//
//    /**
//     * 通过渠道ID,区县ID获取服务区域下开通的服务分类
//     *
//     * @param channelId 渠道ID
//     * @param countyId  区县id
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID,城市id，区县ID获取服务分类", response = ResponseDTO.class, tags = {"渠道ID", "服务分类"})
//    ResponseDTO<List<VtDTO>> listServCategoryByChannelIdAndAreaId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "cityId不能为空") @Positive(message = "cityId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer cityId,
//            @NotNull(message = "countyId不能为空") @Positive(message = "countyId必须为大于0的正整数") @ApiParam(value = "区县ID", required = true) Integer countyId);
//
//    /**
//     * 通过渠道ID,区县ID获取服务区域下开通的服务分类
//     *
//     * @param channelId   渠道ID
//     * @param countyId    区县id
//     * @param servCategId 服务分类id
//     * @return
//     */
//    @ApiOperation(value = "通过渠道ID,城市id，区县ID，服务分类ID获取开通的前台产品", response = ResponseDTO.class, tags = {"渠道ID", "服务分类"})
//    ResponseDTO<List<VtDTO>> listProductByChannelIdAndAreaIdAndServCategId(
//            @NotNull(message = "channelId不能为空") @Positive(message = "channelId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer channelId,
//            @NotNull(message = "cityId不能为空") @Positive(message = "cityId必须为大于0的正整数") @ApiParam(value = "渠道id", required = true) Integer cityId,
//            @NotNull(message = "countyId不能为空") @Positive(message = "countyId必须为大于0的正整数") @ApiParam(value = "区县ID", required = true) Integer countyId,
//            @NotNull(message = "servCategId不能为空") @Positive(message = "servCategId必须为大于0的正整数") @ApiParam(value = "服务分类ID", required = true) Integer servCategId
//    );
//
//}
